69 #define SLAVE_ADDRESS 0x48
101 WDT_A_hold(WDT_A_BASE);
104 CS_setDCOFreq(CS_DCORSEL_0,CS_DCOFSEL_0);
106 CS_initClockSignal(CS_ACLK,CS_VLOCLK_SELECT,CS_CLOCK_DIVIDER_1);
108 CS_initClockSignal(CS_SMCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1);
110 CS_initClockSignal(CS_MCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1);
119 GPIO_setAsPeripheralModuleFunctionInputPin(
121 GPIO_PIN6 + GPIO_PIN7,
122 GPIO_SECONDARY_MODULE_FUNCTION
142 EUSCI_B_I2C_initMasterParam
param = {0};
143 param.selectClockSource = EUSCI_B_I2C_CLOCKSOURCE_SMCLK;
144 param.i2cClk = CS_getSMCLK();
145 param.dataRate = EUSCI_B_I2C_SET_DATA_RATE_400KBPS;
147 param.autoSTOPGeneration = EUSCI_B_I2C_SEND_STOP_AUTOMATICALLY_ON_BYTECOUNT_THRESHOLD;
148 EUSCI_B_I2C_initMaster(EUSCI_B0_BASE, &
param);
151 EUSCI_B_I2C_setSlaveAddress(EUSCI_B0_BASE,
156 EUSCI_B_I2C_setMode(EUSCI_B0_BASE,
157 EUSCI_B_I2C_RECEIVE_MODE
161 EUSCI_B_I2C_enable(EUSCI_B0_BASE);
163 EUSCI_B_I2C_clearInterrupt(EUSCI_B0_BASE,
164 EUSCI_B_I2C_RECEIVE_INTERRUPT0 +
165 EUSCI_B_I2C_BYTE_COUNTER_INTERRUPT +
166 EUSCI_B_I2C_NAK_INTERRUPT
170 EUSCI_B_I2C_enableInterrupt(EUSCI_B0_BASE,
171 EUSCI_B_I2C_RECEIVE_INTERRUPT0 +
172 EUSCI_B_I2C_BYTE_COUNTER_INTERRUPT +
173 EUSCI_B_I2C_NAK_INTERRUPT
180 while (EUSCI_B_I2C_SENDING_STOP ==
181 EUSCI_B_I2C_masterIsStopSent(EUSCI_B0_BASE));
183 EUSCI_B_I2C_masterReceiveStart(EUSCI_B0_BASE);
186 __bis_SR_register(CPUOFF+GIE);
190 #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
191 #pragma vector=USCI_B0_VECTOR
193 #elif defined(__GNUC__)
194 __attribute__((interrupt(USCI_B0_VECTOR)))
198 static uint8_t count = 0;
199 switch(__even_in_range(UCB0IV, USCI_I2C_UCBIT9IFG))
203 case USCI_I2C_UCALIFG:
205 case USCI_I2C_UCNACKIFG:
206 EUSCI_B_I2C_masterReceiveStart(EUSCI_B0_BASE);
208 case USCI_I2C_UCSTTIFG:
210 case USCI_I2C_UCSTPIFG:
212 case USCI_I2C_UCRXIFG3:
214 case USCI_I2C_UCTXIFG3:
216 case USCI_I2C_UCRXIFG2:
218 case USCI_I2C_UCTXIFG2:
220 case USCI_I2C_UCRXIFG1:
222 case USCI_I2C_UCTXIFG1:
224 case USCI_I2C_UCRXIFG0:
226 RXData = EUSCI_B_I2C_masterReceiveSingle(
234 case USCI_I2C_UCTXIFG0:
236 case USCI_I2C_UCBCNTIFG:
237 GPIO_toggleOutputOnPin(
242 case USCI_I2C_UCCLTOIFG:
244 case USCI_I2C_UCBIT9IFG:
MPU_initThreeSegmentsParam param
__bic_SR_register_on_exit(LPM3_bits|GIE)